home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / DIRS.SWG / 0024_File Finder.pas < prev    next >
Pascal/Delphi Source File  |  1994-01-27  |  2KB  |  67 lines

  1.  
  2. program XFind(input,output);
  3.   uses Dos,
  4.        FileSpec;
  5.  
  6. var
  7.   FS: TWildCard;
  8.  
  9.  
  10. procedure WriteSpec(Name: string);
  11. begin
  12.    Name := FExpand(Name);
  13.    WriteLn(Name);
  14. end;
  15.  
  16. procedure FindFiles(Dir: String);
  17. var
  18.   Search:  SearchRec;
  19.   CurDir:  String;
  20.   DirList: array [1..128] of string[12];
  21.   i,
  22.   DirNum:  Byte;
  23. begin
  24.   CurDir := FExpand('.');
  25.   if (Dir<>'.') and (Dir<>'..') then begin
  26.     ChDir(FExpand(Dir));
  27.     DirNum := 0;
  28.     FindFirst('*.*',AnyFile,Search);
  29.     if DosError<>18 then begin
  30.          if Search.Attr=Directory
  31.            then begin
  32.                inc(DirNum);
  33.                DirList[ DirNum ] := Search.Name;
  34.              end
  35.            else if FS.FitSpec(Search.Name)
  36.              then WriteSpec(Search.Name);
  37.          repeat
  38.            FindNext(Search);
  39.            if DosError<>18
  40.              then if Search.Attr=Directory
  41.                then begin
  42.                   inc(DirNum);
  43.                   DirList[ DirNum ] := Search.Name;
  44.                  end
  45.                else if FS.FitSpec(Search.Name)
  46.                   then WriteSpec(Search.Name);
  47.          until DosError = 18;
  48.        end;
  49.     if DirNum<>0
  50.       then for i := 1 to DirNum do FindFiles(DirList[i]);
  51.     ChDir(CurDir);
  52.   end;
  53. end;
  54.  
  55. var
  56.   i:      Byte;
  57. begin
  58.   if ParamCount = 0
  59.     then WriteLn('Usage: XFIND file1 [file2 file3 ... ]')
  60.     else begin
  61.        FS.Init;
  62.        for i := 1 to ParamCount do FS.AddSpec(ParamStr(i));
  63.        FindFiles('\');
  64.        FS.Done;
  65.       end;
  66. end.
  67.